#include<iostream>
#include <string>

//饿汉模式
class Singleton{
public:
    Singleton(const Singleton& ) =delete;
    Singleton& operator=(const Singleton& )=delete;
    //获取单例
    static Singleton &GetInstance(){
        return _eton;
    }
private:
    static Singleton _eton;
    Singleton(){
        std::cout<<"构造"<<std::endl;
    }
    ~Singleton(){}
};
Singleton Singleton::_eton;

// //懒汉模式:只有首次调用的时候创建:采用类中静态函数的局部变量
// class Singleton{
// public:
//     static  Singleton& GetInstance(){
//         static Singleton _eton;
//         return _eton;
//     }
//     Singleton(const Singleton& ) =delete;
//     Singleton& operator=(const Singleton& )=delete;
// private:
//     Singleton(){
//         std::cout<<"构造"<<std::endl;
//     }
//     ~Singleton(){}
// };

int main(){
    std::cout<<"------------"<<std::endl;
    Singleton&instace=Singleton::GetInstance();//只有首次调用才会创建
    return 0;
}